/* 正经人写法 —— 递归调用 */
function tranListToTreeData(depts, rootVal) {
	const arr = []
	depts.forEach(item => {
		if (item.pid === rootVal) {
			const children = tranListToTreeData(depts, item.id)
			if (children.length) {
				item.children = children
			}
			arr.push(item)
		}
	})
	return arr
}

/* 正经写法拆解分析版 */
// function tranListToTreeData(depts, rootVal) {
// 	// 创建一个数组变量
// 	const arr = []
// 	// 循环请求数据
// 	depts.forEach(item => {
// 		// 判断如果pid === '' ，证明是一级数据
// 		if (item.pid === rootVal) {
// 			// 将所有一级数据储存，得到一级列表数组
// 			arr.push(item)
// 			// 定义childrenList接收匿名自调用函数返回值
// 			const childrenList = (function() {
// 				// 定义children为初始空数组
// 				const children = []
// 				// 再次循环请求数据
// 				depts.forEach(item2 => {
// 					// 判断如果pid === 当前循环item的ID（结构规定），代表该item2为当前循环item的子数据
// 					if (item2.pid === item.id) {
// 						// 将该子数据push进children数组中
// 						children.push(item2)
// 					}
// 				})
// 				// 匿名函数内返回当前循环item2中的children数组
// 				return children
// 			})()

// 			// 最后将该子数组列表赋值给正在循环的item
// 			item.children = childrenList
// 		}
// 	})
// 	return arr
// }


// function tranListToTreeData(depts, rootVal) {
// 	depts.forEach(item => {
// 		if (item.pid !== rootVal) {
// 			const parent = depts.find(el => el.id === item.pid)
// 			console.log(parent)
// 			if (parent) {
// 				parent.children = parent.children || []
// 				parent.children.push(item)
// 			}
// 		}
// 	})
// 	return depts.filter(item => item.pid === rootVal)
// }






/* 脑瘫写法 */
// function tranListToTreeData(depts, rootVal) {
// 	const arr = []
// 	const children = []
// 	depts.forEach(item => {
// 		if (item.pid === rootVal) {
// 			// const children = tranListToTreeData(depts, item.id)
// 			// if (children.length) {
// 			// 	item.children = children
// 			// }
// 			// console.log(item)
// 			arr.push(item)
// 		}
// 		depts.forEach(item2 => {
// 			if (item2.pid === item.id) {
// 				children.push(item2)
// 			}
// 		})
// 	})
// 	for (let i = 0, len = arr.length; i < len; i++) {
// 		const res = children.filter(item => {
// 			return item.pid === arr[i].id
// 		})
// 		arr[i].children = res
// 	}

// 	return arr
// }


export default tranListToTreeData
